home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / doc / libcairo-perl / examples / png / spiral.pl < prev    next >
Encoding:
Perl Script  |  2005-07-12  |  895 b   |  53 lines

  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5. use Cairo;
  6.  
  7. use constant
  8. {
  9.     WIDTH => 600,
  10.     HEIGHT => 600,
  11. };
  12.  
  13. {
  14.     my $surf = Cairo::ImageSurface->create ('argb32', WIDTH, HEIGHT);
  15.     my $cr = Cairo::Context->create ($surf);
  16.  
  17.     $0 =~ /(.*)\.pl/;
  18.     my $out = "$1.png";
  19.  
  20.     $cr->rectangle (0, 0, WIDTH, HEIGHT);
  21.     $cr->set_source_rgb (1, 1, 1);
  22.     $cr->fill;
  23.  
  24.     draw_spiral ($cr, WIDTH, HEIGHT);
  25.  
  26.     $cr->show_page;
  27.  
  28.     $surf->write_to_png ($out);
  29. }
  30.  
  31. sub draw_spiral
  32. {
  33.     my ($cr, $width, $height) = @_;
  34.  
  35.     my $wd = .02 * $width;
  36.     my $hd = .02 * $height;
  37.  
  38.     $width -= 2;
  39.     $height -= 2;
  40.  
  41.     $cr->move_to ($width + 1, 1 - $hd);
  42.     for (my $i=0; $i < 9; $i++)
  43.     {
  44.         $cr->rel_line_to (0, $height - $hd * (2 * $i - 1));
  45.         $cr->rel_line_to (- ($width - $wd * (2 * $i)), 0);
  46.         $cr->rel_line_to (0, - ($height - $hd * (2 * $i)));
  47.         $cr->rel_line_to ($width - $wd * (2 * $i + 1), 0);
  48.     }
  49.  
  50.     $cr->set_source_rgb (0, 0, 1);
  51.     $cr->stroke;
  52. }
  53.